home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
kowin
/
dockob
/
mine5.kob
< prev
next >
Wrap
Text File
|
1997-06-06
|
5KB
|
226 lines
/**************************************
/* 一瞬マインスイーパー by v914AKSTN *
/**************************************
dim char map( 22*22-1 )
dim char suji( 22*22-1 )
dim int v(7)={ -22-1, -22, -22+1, -1, 1, 22-1, 22, 22+1 }
dim int m_palet(15)={
&h4000,&h8000,&hFDAC,&h32,&h4A52,&h6C0,&hDE80,&hB832,
&h87AC,&hF9CE,&h5BC,&hAF48,&hA000,&hFFFE,&h43D0,&h294A
}
dim char m_pat(3071) /* グラフィックパターン
dim int work(22*22-1)
int i,x
int N=50 /* 爆弾の個数
int r,rm
int flag=2
int starttime,endtime
int t_wno /* テンポラリのウインドウNo(by 電脳魔術団)
/* グラフィックデータ読み込み
i=fopen( left$( b_argv(0), strrchr( b_argv(0), '\' )+1 )+"mine5.pat", "r" )
fread( m_pat, 3072, i )
fclose( i )
/* オープン
t_wno = WindowTitleOpen( 0, WINX, WINY, 16*20, 16*20, 0, "一瞬マインスイーパー", 3 )
WindowTitleOpen( 1, WINX+16*20+4, WINY, 120, 72, 0, "一瞬マイン", 2 )
GraphicInit( 0, 16, m_palet )
WindowRedraw(t_wno) /*(by 電脳魔術団)
end /* 初期化処理の終わり
/************************
/* マウスが押されたら→ *
/************************
func Emouse( wno )
int i,j,s,x
int w1,w2
if wno=1 then {
if flag then {
flag=2
WindowRedraw(0)
WindowRedraw(1)
return(1)
}
return(0)
}
if flag then return(0)
/* 場所計算(マウスカーソル位置からパネルを割り出す)
x=(info_x\16)+1 + ( (info_y\16)+1 )*22
/*もう開いてる→ 何もしない
if suji(x)<=8 then return(1)
/*左ボタンだ!→
if info_Lon then {
if suji(x)>9 then return(1) /* 爆弾マークは開けない
/*爆弾がある→ どかん! 終わり
if map(x) then {
for x=0 to 22*22-1
if map(x) and suji(x)=9 then suji(x)=11
next
WindowRedraw( 0 )
ITIME=-1
flag=1 /* ゲーム終了
/*爆弾がない→ まわりの爆弾の個数計算、表示
} else {
w1=1:w2=0
work(0)=x
while w1<>w2
x=work(w2):w2=w2+1
s=0
for i=0 to 7
s=s+map(x+v(i))
next
suji(x)=s /* 空白・数字
m_put( x )
r=r-1
if s=0 then { /* 空白の周り登録
for i=0 to 7
if suji(x+v(i))=9 then {
suji(x+v(i))=0
work(w1)=x+v(i):w1=w1+1
}
next
}
endwhile
print_panel()
if r=rm then { /* ゲーム終了!
flag=1:ITIME=-1
DrawSymbol( 0, 58, 148, " Congraturation! ", 9, 24 )
}
}
/*うんにゃ、右ボタンだ!→
} else if info_Ron then {
/*開いてないパネル→ 爆弾マークを表示
if suji(x)=9 then {
suji(x)=10 /* 爆弾マーク@
m_put(x)
r=r-1
rm=rm-1
print_panel()
/*爆弾マーク→ 開いてないパネルを表示
} else if suji(x)=10 then {
suji(x)=9 /* まだ開いてない
m_put(x)
r=r+1
rm=rm+1
print_panel()
}
}
endfunc
/**********
/* 再描画 *
/**********
func Eredraw( wno )
int i,j
int h1,v1
if flag=2 then field_init() /* ゲームスタート!
switch wno
case 0:
DrawClear( wno, 2 ) /* Graphic
h1=(info_x+info_h)/16 /* 書き直し範囲
v1=(info_y+info_v)/16
for j=info_y/16 to v1
for i=info_x/16 to h1
DrawGraphicPut( wno, (i-1)*16, (j-1)*16, (i-1)*16+15, (j-1)*16+15, m_pat, suji( i+j*22 )*256 )
next
next
break
case 1:
DrawClear( wno, 1 )
i=(endtime-starttime)/100
print_panel()
DrawSymbol( wno, 8, 48, " 時間 : "+right$(" "+itoa(i),3) )
endswitch
endfunc
/*******************
/* 1秒毎の呼びだし *
/*******************
func Einterval( wno )
int i
endtime=IntervalTime()
i=(endtime-starttime)/100
DrawSymbol( 1, 8, 48, " 時間 : "+right$(" "+itoa(i),3) )
endfunc
/************
/* 各種サブ *
/************
/* パーツ描画
func m_put( x )
int x0,y0
x0=((x mod 22)-1)*16
y0=(x\22-1)*16
DrawGraphicPut( 0, x0, y0, x0+15, y0+15, m_pat, suji(x)*256 )
endfunc
/* 残りパネル&爆弾数表示
func print_panel()
DrawSymbol( 1, 8, 8, "パネル : "+right$(" "+itoa(r),3) )
DrawSymbol( 1, 8, 28, " 爆弾 : "+right$(" "+itoa(rm),3) )
endfunc
/* フィールド初期化
func field_init()
int i,j,x
for i=0 to 22*22-1
map(i)=0 /* 爆弾無し
suji(i)=9 /* まだ開いてないパネル
next
for i=0 to 22-1
suji(i)=0:suji(i+21*22)=0 /* 周囲を開いていることにする
suji(i*22)=0:suji(i*22+21)=0 /* 自動開き用の番人
next
for i=1 to N /* 爆弾 N 個を散らす
repeat
x=int(rnd()*20)+1 + (int(rnd()*20)+1)*22 /* ランダムな位置
until map(x)=0 /* 爆弾の無いところを探して
map(x)=1 /* 爆弾を置く
next
r=20*20 /* 残りパネル
rm=N /* 残り爆弾
flag=0 /* 1 になったらゲーム終了
starttime=IntervalTime()
endtime=starttime
ITIME=100
endfunc
/*******************
/* 終わり H8/2/14 *
/*******************